package oa.util;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 分页的工具类：用于封装分页结果及在模版中显示
 * 
 * @author ezerg.com
 */

@SuppressWarnings("rawtypes")
public class PageUtil {
	
	private String url = "";// 分页请求的URL
	
	private Map params = new HashMap();// 传递参数
	
	private List result = new ArrayList();//

	private int total = 0;// 所有记录数

	private int pages = 1;// 所有页数

	private int rows = 1;// 每页记录数

	private int page = 1;// 当前页
	
	private int start = 0;
	
	private int end = 0;
	
	public int getStart() {
		return start;
	}

	public void setStart(int start) {
		this.start = start;
	}

	public int getEnd() {
		return end;
	}

	public void setEnd(int end) {
		this.end = end;
	}

	public void setTotal(int total) {
		this.total = total;
	}

	public void setPages(int pages) {
		this.pages = pages;
	}

	/**
	 * 初始化当前页及每页记录数
	 * 
	 * @param page 当前页
	 * @param rows 每页记录数
	 */
	public PageUtil(int page, int rows, List result) {
		this.page = page;
		this.rows = rows;
		this.result = result;
		this.total = result.size();
		// 计算总页数
		pages = total / rows;
		if ((total % rows) != 0) {
			pages += 1;
		}
		// 计算当前页
		if (page < 0 || page > pages) {
			page = 1;
		}
		// 计算开始、结束
		start = (page-1)*rows;
		end = start + rows;
	}

	/**
	 * 返回上一页
	 * 
	 * @return 上一页
	 */
	public int getPrevious() {
		if (page > 1) {
			return page - 1;
		} else {
			return page;
		}
	}

	/**
	 * 返回下一页
	 * 
	 * @return 下一页
	 */
	public int getNext() {
		if (page < pages) {
			return page + 1;
		} else {
			return page;
		}
	}

	/**
	 * 当前页数
	 * 
	 * @return 当前页数
	 */
	public int getPage() {
		return page;
	}

	public void setPage(int cPage) {
		page = cPage;
	}

	/**
	 * 每页显示的记录数
	 * 
	 * @return 记录数
	 */
	public int getRows() {
		return rows;
	}

	public void setRows(int pSize) {
		rows = pSize;
	}

	/**
	 * 取得总记录数
	 * 
	 * @return 总记录数
	 */
	public int getTotal() {
		return total;
	}

	/**
	 * 取得总页数
	 * 
	 * @return 总页数
	 */
	public int getPages() {
		return pages;
	}

	/**
	 * 取得分页请求的URL
	 * 
	 * @return
	 */
	public String getUrl() {
		return url;
	}

	/**
	 * 设置分页请求的URL
	 * 
	 * @param url
	 * @return
	 */
	public PageUtil setUrl(String url) {
		this.url = url;
		return this;
	}

	/**
	 * 取得传递参数
	 * 
	 * @return
	 */
	public Map getParams() {
		return params;
	}

	/**
	 * 设置传递参数
	 * 
	 * @param params
	 * @return
	 */
	public PageUtil setParams(Map params) {
		this.params = params;
		return this;
	}
	
	public List getResult() {
		return result.subList(start, end);
	}

	public void setResult(List result) {
		this.result = result;
	}


}
